package com.item;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.function.BiConsumer;

/**
 * Map集合（双列集合）
 * HashMap,LinkedHashMap,TreeMap
 * ---Map集合特点由键决定
 * ---Map集合的键是无序、不重复、无索引，值不做要求
 * ---HashMap键是无序、不重复、无索引，值不做要求
 * ---LinkedHashMap元素按照键是无序、不重复、有索引，值不做要求
 * ---TreeMap元素按照键是排序、不重复、有索引，值不做要求
 */
public class MapDemo {
    public static void main(String[] args) {
        test3();
    }

    //3.第三种遍历（Lambda表达式）
    public static void test3(){
        Map<String,Double> map = new HashMap<>();
        map.put("张三", 100.0);
        map.put("李四", 200.0);
        map.put("王五", 300.0);
        map.put("赵六", 400.0);
//        map.forEach(new BiConsumer<String, Double>() {
//            @Override
//            public void accept(String key, Double value) {
//                System.out.println(key+"---"+value);
//            }
//        });
        map.forEach((key, value) -> System.out.println(key+"---"+value));
    }

    //2.第二种遍历
    public static void test2(){
        Map<String,Double> map = new HashMap<>();
        map.put("张三", 100.0);
        map.put("李四", 200.0);
        map.put("王五", 300.0);
        map.put("赵六", 400.0);
        //1.将map集合转成set集合（将map中的key-value绑定成一个entry对象
        Set<Map.Entry<String,Double>> entrySet = map.entrySet();
        for(Map.Entry<String,Double> entry : entrySet){
            String key = entry.getKey();
            Double value = entry.getValue();
            System.out.println(key+"---"+value);
        }
    }
    //1.第一种遍历
    public static void test1() {
        Map<String,Double> map = new HashMap<>();
        map.put("张三", 100.0);
        map.put("李四", 200.0);
        map.put("王五", 300.0);
        map.put("赵六", 400.0);
        Set<String> KeySet = map.keySet();
        for(String key : KeySet){
            Double value = map.get(key);
            System.out.println(key+"---"+value);
        }
    }
    private static void test0() {
        Map<String,Double> map = new HashMap<>();
        map.put("张三", 100.0);
        map.put("李四", 200.0);
        map.put("王五", 300.0);
        map.put("赵六", 400.0);
        map.put("赵六", 500.0);
        System.out.println(map);

        map.remove("张三");
        System.out.println(map);
//        map.clear();
//        System.out.println(map);

        boolean b1 = map.containsKey("李四");
        System.out.println("b1="+b1);
        boolean b2 = map.containsValue(300.0);
        System.out.println("b2="+b2);
        boolean empty = map.isEmpty();
        System.out.println("empty="+empty);
        int size = map.size();
        System.out.println("size="+size);
    }
}
